for g in[*open(0)][1:]:a,b=sorted(map(int,g.split()));c=min(b-a,a);print(c+(a-c)*2//3)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
int main()
{
int t;
cin >> t;
while(t--){
ll a,b;
cin >> a >> b;
if(a!=0 && b!=0){
if(2*a<b){
cout << a << endl;
}else if(a>2*b){
cout << b << endl;
}else{
cout << (a+b)/3 << endl;
}
}else{
cout << 0 << endl;
}
}
}
1543B - Customising the Track | 1337A - Ichihime and Triangle |
1366A - Shovels and Swords | 919A - Supermarket |
630C - Lucky Numbers | 1208B - Uniqueness |
1384A - Common Prefixes | 371A - K-Periodic Array |
1542A - Odd Set | 1567B - MEXor Mixup |
669A - Little Artem and Presents | 691B - s-palindrome |
851A - Arpa and a research in Mexican wave | 811A - Vladik and Courtesy |
1006B - Polycarp's Practice | 1422A - Fence |
21D - Traveling Graph | 1559B - Mocha and Red and Blue |
1579C - Ticks | 268B - Buttons |
898A - Rounding | 1372B - Omkar and Last Class of Math |
1025D - Recovering BST | 439A - Devu the Singer and Churu the Joker |
1323A - Even Subset Sum Problem | 1095A - Repeating Cipher |
630F - Selection of Personnel | 630K - Indivisibility |
20B - Equation | 600B - Queries about less or equal elements |